package com.hmj.excel.frame;



import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;


public class ExcelJFrame extends JFrame{
    public ExcelJFrame(){
        // 1. 创建一个顶层容器（窗口）
        super("测试窗口");          // 创建窗口
        this.setSize(500, 800); // 设置窗口大小
        this.setLocationRelativeTo(null);   // 把窗口位置设置到屏幕中心
        // 当点击窗口的关闭按钮时退出程序（没有这一句，程序不会退出）
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        this.setLayout(new GridLayout(3,1));

        this.add(taxPanel());
        this.add(diffExcelPanel());
        this.add(changeExcelPanel());
      //  this.getContentPane().add(diffExcelPanel(),1);
        // 把 面板容器 作为窗口的内容面板 设置到 窗口
//        this.setContentPane(taxPanel());

        //this.setContentPane(diffExcelPanel());
        // 5. 显示窗口，前面创建的信息都在内存中，通过 jf.setVisible(true) 把内存中的窗口显示在屏幕上。
        this.setVisible(true);
    }

    private final JPanel  taxPanel(){
        //  创建中间容器（面板容器）
        final JPanel panel = new JPanel(); // 创建面板容器，使用默认的布局管理器
        panel.setLayout(new FlowLayout(0,10,10));
        panel.setBackground(Color.CYAN);
        // 创建一个基本组件（按钮），并添加到 面板容器 中
        final JTextField textField = new JTextField(30);
        panel.add(textField);
        JButton btn = new JButton("选择文件");
        panel.add(btn);

        final JTextField outputField = new JTextField(30);
        panel.add(outputField);
        JButton obtn = new JButton("选择输出目录");
        panel.add(obtn);

        JLabel label1 = new JLabel("输入表达式:");
        panel.add(label1);
        JTextField expressField = new JTextField(30);
        panel.add(expressField);

        JButton startBtn = new JButton("确定");
        panel.add(startBtn);
        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(selectFile());
            }
        });
        obtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                outputField.setText(selectDir());
            }
        });
        startBtn.addActionListener(new TaxActionListener(textField,outputField,expressField));
        return panel;
    }

    private final JPanel diffExcelPanel(){
        //  创建中间容器（面板容器）
        final JPanel panel = new JPanel(); // 创建面板容器，使用默认的布局管理器
        panel.setLayout(new FlowLayout(0,10,10));
        panel.setBackground(Color.RED);
        // 创建一个基本组件（按钮），并添加到 面板容器 中
        final JTextField fileField1 = new JTextField(30);
        panel.add(fileField1);
        JButton btn1 = new JButton("选择文件");
        panel.add(btn1);

        final JTextField fileField2 = new JTextField(30);
        panel.add(fileField2);
        JButton btn2 = new JButton("选择文件");
        panel.add(btn2);

        final JTextField fileField3 = new JTextField(30);
        panel.add(fileField3);
        JButton btn3 = new JButton("选择输出目录");
        panel.add(btn3);

        JLabel label1 = new JLabel("输入比较列:");
        panel.add(label1);
        JTextField fileField4 = new JTextField(30);
        panel.add(fileField4);

        JButton startBtn = new JButton("确定");
        panel.add(startBtn);

        btn1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                fileField1.setText(selectFile());
            }
        });
        btn2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                fileField2.setText(selectFile());
            }
        });
        btn3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                fileField3.setText(selectDir());
            }
        });
        startBtn.addActionListener(new DiffActionListener(fileField1,fileField2,fileField3,fileField4));
        return panel;
    }

    private final JPanel changeExcelPanel(){
        //  创建中间容器（面板容器）
        final JPanel panel = new JPanel(); // 创建面板容器，使用默认的布局管理器
        panel.setLayout(new FlowLayout(0,10,10));
        panel.setBackground(Color.GREEN);
        // 创建一个基本组件（按钮），并添加到 面板容器 中
        final JTextField fileField1 = new JTextField(30);
        panel.add(fileField1);
        JButton btn1 = new JButton("选择文件");
        panel.add(btn1);

        final JTextField fileField2 = new JTextField(30);
        panel.add(fileField2);
        JButton btn2 = new JButton("选择文件");
        panel.add(btn2);

        final JTextField fileField3 = new JTextField(30);
        panel.add(fileField3);
        JButton btn3 = new JButton("选择输出目录");
        panel.add(btn3);

        JLabel label1 = new JLabel("输入比较列:");
        panel.add(label1);
        JTextField fileField4 = new JTextField(30);
        panel.add(fileField4);


        JLabel label2 = new JLabel("输入变化列:");
        panel.add(label2);
        JTextField fileField5 = new JTextField(30);
        panel.add(fileField5);
        JButton startBtn = new JButton("确定");
        panel.add(startBtn);

        btn1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                fileField1.setText(selectFile());
            }
        });
        btn2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                fileField2.setText(selectFile());
            }
        });
        btn3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                fileField3.setText(selectDir());
            }
        });
        startBtn.addActionListener(new ChangeActionListener(fileField1,fileField2,fileField3,fileField4,fileField5));
        return panel;
    }

    private String selectFile(){
        JFileChooser chooser = new JFileChooser();
        chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        chooser.showDialog(new JLabel(), "选择");
        File file = chooser.getSelectedFile();
        return file.getAbsoluteFile().toString();
    }
    private String selectDir(){
        JFileChooser chooser = new JFileChooser();
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        chooser.showDialog(new JLabel(), "选择");
        File file = chooser.getSelectedFile();
        return file.getAbsoluteFile().toString();
    }
}
